package controllers

import (
	"gitee.com/zhengjianfeng/pay/common"
	"gitee.com/zhengjianfeng/pay/models"
	"gitee.com/zhengjianfeng/pay/services"
	"gitee.com/zhengjianfeng/pay/web/middleware/jwts"
	"github.com/kataras/iris/v12"
	"time"
)

type AdminIndexController struct {
	Ctx               iris.Context
	PayAccountService services.PayAccountService
}

// 更新token(建议1个小时30分钟更新一次)
func (c *AdminIndexController) PostTokenUpdate() {

	var (
		exp         time.Time
		tokenString string
		returnData  common.AccountReturnData
		accountInfo *models.PayAccount
	)

	// 获取该用户的账号信息
	if accountInfo = c.PayAccountService.GetOne(jwts.BaseLoginInfo.Username); accountInfo.Id == 0 {
		_, _ = c.Ctx.JSON(common.GetResponseData(1, "该用户不存在，无法更新token", nil))
		return
	}

	// 检查该用户的状态是否正常
	if accountInfo.Status != 1 {
		_, _ = c.Ctx.JSON(common.GetResponseData(1, "该账号已经被关闭，请联系管理员", nil))
		return
	}

	exp = time.Unix(jwts.BaseLoginInfo.Exp, 0)

	// jwt 获取token
	// 更新过期时间
	tokenString = common.GetAuthToken(jwts.BaseLoginInfo)

	if time.Now().Add(1 * time.Hour).After(exp) {
		// 距离过期时间小于1小时 可以更新
		returnData = common.AccountReturnData{Token: tokenString}
		_, _ = c.Ctx.JSON(common.GetResponseData(0, "success", returnData))

	} else {
		// 距离过期时间大于1小时，不能更新
		_, _ = c.Ctx.JSON(common.GetResponseData(1, "距离过期时间大于1小时，不能更新", nil))
	}
	return
}
